/*
全局内存管理

GlobalAlloc、GlobalFree函数
GlobalFlags、GlobalSize函数
GlobalLock函数
_tcscpy函数
*/
#include <windows.h>
#include <tchar.h>


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, INT iCmdShow)
{
    // 内存句柄
    HGLOBAL hMem;
    // 内存地址
    // LPVOID lpMem;
    // 属性
    UINT uFlags;
    // 内存大小
    SIZE_T sizeMem;

    // 分配内存
    // GPTR（GMEM_FIXED | GMEM_ZEROINIT）
    hMem = GlobalAlloc(GPTR, 1000);
    // 将数据复制到内存
    _tcscpy(hMem, TEXT("this is string"));
    // 获取内存属性
    uFlags = GlobalFlags(hMem);
    _tprintf(TEXT("内存中的内容：%s，内存地址：%p，内存属性：%u。\n"), (char *)hMem, hMem, uFlags);
    GlobalFree(hMem);


    // 分配内存
    hMem = GlobalAlloc(GMEM_MOVEABLE, 1000);
    sizeMem = GlobalSize(hMem);
    uFlags = GlobalFlags(hMem);
    _tprintf(TEXT("内存大小：%I64u，内存地址：%p，内存属性：%u。\n"), sizeMem, hMem, uFlags);

    // 锁定
    GlobalLock(hMem);
    _tprintf(TEXT("（调用GlobalLock函数）内存大小：%I64u，内存地址：%p，内存属性：%u。\n"), sizeMem, hMem, uFlags);
    GlobalFree(hMem);

    return 0;
}